home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue57 / DragDrop / DragEdit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-02-11  |  2.1 KB  |  98 lines

  1. unit DragEdit;
  2.  
  3. {$ifdef Ver90} { Delphi 2.0x }
  4.   {$define DelphiLessThan4}
  5. {$endif}
  6. {$ifdef Ver93} { C++ Builder 1.0x }
  7.   {$define DelphiLessThan4}
  8. {$endif}
  9. {$ifdef Ver100} { Delphi 3.0x }
  10.   {$define DelphiLessThan4}
  11. {$endif}
  12. {$ifdef Ver110} { C++ Builder 3.0x }
  13.   {$define DelphiLessThan4}
  14. {$endif}
  15.  
  16. interface
  17.  
  18. uses
  19.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  20.   StdCtrls;
  21.  
  22. type
  23.  
  24.   TDragEdit = class(TEdit)
  25.   private
  26. {$ifdef DelphiLessThan4}
  27.     FDragImages: TImageList;
  28. {$else}
  29.     FDragImages: TDragImageList;
  30. {$endif}
  31.   protected
  32. {$ifdef DelphiLessThan4}
  33.     function GetDragImages: TCustomImageList; override;
  34. {$else}
  35.     function GetDragImages: TDragImageList; override;
  36. {$endif}
  37.     procedure MouseDown(Button: TMouseButton;
  38.       Shift: TShiftState; X, Y: Integer); override;
  39.   public
  40.     constructor Create(AOwner: TComponent); override;
  41.   end;
  42.  
  43. procedure Register;
  44.  
  45. implementation
  46.  
  47. {$R DragEditImage.Res}
  48.  
  49. procedure Register;
  50. begin
  51.   RegisterComponents('Clinic', [TDragEdit]);
  52. end;
  53.  
  54. { TDragEdit }
  55.  
  56. constructor TDragEdit.Create(AOwner: TComponent);
  57. begin
  58.   inherited Create(AOwner);
  59.   ControlStyle := ControlStyle + [csDisplayDragImage];
  60. end;
  61.  
  62. {$ifdef DelphiLessThan4}
  63. function TDragEdit.GetDragImages: TCustomImageList;
  64. {$else}
  65. function TDragEdit.GetDragImages: TDragImageList;
  66. {$endif}
  67. var
  68.   Bmp: TBitmap;
  69. begin
  70.   if not Assigned(FDragImages) then
  71.   {$ifdef DelphiLessThan4}
  72.     FDragImages := TImageList.Create(Self);
  73.   {$else}
  74.     FDragImages := TDragImageList.Create(Self);
  75.   {$endif}
  76.   Bmp := TBitmap.Create;
  77.   try
  78.     Bmp.LoadFromResourceName(HInstance, 'Athena');
  79.     FDragImages.Width := Bmp.Width;
  80.     FDragImages.Height := Bmp.Height;
  81.     FDragImages.AddMasked(Bmp, clSilver);
  82.     Result := FDragImages;
  83.   finally
  84.     Bmp.Free
  85.   end
  86. end;
  87.  
  88. procedure TDragEdit.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
  89.   Y: Integer);
  90. begin
  91.   inherited;
  92.   //Automatically start dragging on a Ctrl-click
  93.   if ssCtrl in Shift then
  94.     BeginDrag(True)
  95. end;
  96.  
  97. end.
  98.